package Lambda表达式;

public class TestLambda1 {
    /*本类用于lambda表达式入门*/
    //需求：在多线程场景下，在控制台输出：采用三种思路
    public static void main(String[] args) {
       //2.在main函数中定义接口实现类;业务类对象
        MyRunnable target = new MyRunnable();
        //3.创建线程对象
        Thread t = new Thread(target);
        Thread t2 = new Thread(target);
        t.start();//4.启动线程
        t2.start();


        /*5.方案二：改进：使用匿名内部类的方式：*/
      new Thread(new MyRunnable(){
          //方法体：重写run抽象方法
          @Override
          public void run() {
              System.out.println("匿名内部类启动多线程2");
          }
      }).start();

        System.out.println("-------------------------------------");
        /*6.方案三：继续改进：使用lambda表达式的方式：*/
         // new Thread(()->{}).start();

        new Thread(()->{  //小括号表示抽象方法run方法,无参且无返回值
            System.out.println("lambda表达式启动多线程3");
        }).start();
        System.out.println("-------------------------------------");


    }
 /*
   方案一：.以定义接口/接口实现类的形式来实现多线程。
  */
 static class  MyRunnable implements  Runnable{ //实现Runnable接口，重写run方法

     @Override
     public void run() {
         System.out.println("接口实现类启动当前线程1");
     }
 }
}
